const User = require("../model/user.model.js");

//为什么每次都要使用async  awite   因为数据库查询是异步的操作  使用这个可以等待他返回数据在执行下面操作
class UserService {
  async createUser(user_name, password) {
    //todo:写入数据库
    //业务是注册  就是  插入数据
    //await是一个表达是  他返回promise对象值(value)
    //代码不报错 res = 成功结果
    //代码报错  res = 报错(可以通过try catch捕获)
    //最终把res导出去  retrun出去
    const res = await User.create({
      //方法 创建一条记录
      //表的字段     穿过来的参数
      user_name: user_name,
      password: password,
    });
    // console.log(res);
    // console.log(aaa);
    return res.dataValues;
  }
  async getUserInfo({ id, user_name, password, is_admin }) {
    const whereOpt = {}; //创建一个对象

    id && Object.assign(whereOpt, { id }); //拷贝方法  id&&  如果有id  就是把id这个对象拷贝到obj里面 如果不存在id就什么都不执行不做
    user_name && Object.assign(whereOpt, { user_name });
    password && Object.assign(whereOpt, { password });
    is_admin && Object.assign(whereOpt, { is_admin });

    const res = await User.findOne({
      //方法  查询到  第一条数据 多条也只拿第一条数据  没有就没有
      attributes: ["id", "user_name", "password", "is_admin"], //需要查询的字段 这里为什么不用* 是因为*效率慢 需要哪些字段写哪些
      where: whereOpt,
    });
    return res ? res.dataValues : null;
  }
}

module.exports = new UserService();
